package com.henu.engineer.controller.questionnaire

import com.alibaba.fastjson.JSONObject
import com.henu.engineer.dao.entity.questionnaire.QuestionnaireResultRealName
import com.henu.engineer.service.questionnaire.QuestionnaireService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

/**
 *
 */
@RestController
@RequestMapping("/questionnaire")
class QuestionnaireTemplateController {

    @Autowired
    lateinit var questionnaireService: QuestionnaireService


    /**
     * √
     * 问卷模板---查看所有模板
     * 参数：无
     * 返回：List<Questionnaire>
     */
    @RequestMapping("/allTemplates")
    fun getAllTemplates(): JSONObject {
        var res = JSONObject()
        res["data"] = questionnaireService.getAllQuestionnaireTemplate()
        if (res["data"] == null) {
            res["msg"] = "NO_Questionnaire_Templates"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }

    /**
     * √
     * 问卷模板--查看特定模板
     * 根据id查找相应模板
     * 参数：questionnaireId  Int
     * 返回:Questionnaire
     */
    @RequestMapping("/singleTemplate")
    fun getSingleTemplate(questionnaireId: Int): JSONObject {
        var res = JSONObject()
        res["data"] = questionnaireService.getQuestionnaireTemplate(questionnaireId)

        if (res["data"] == null) {
            res["msg"] = "NO_Questionnaire_Templates"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }


    //------------------------------------------------------------------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------------------------------------------------------------------


    /**
     * √
     * 发起的问卷-发起新的问卷
     * 参数:questionnaireId   Int
     * 在问卷模板里面点击，传输当前要发起问卷的questionnaireId
     * 返回：Boolean
     */
    @RequestMapping("/initiateQuestionnaire")
    fun initiateNewQuestionnaire(questionnaireId: Int): JSONObject {
        var res = JSONObject()
        if (questionnaireService.initiateNewQuestionnaire(questionnaireId)) {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        } else {
            res["msg"] = "Failure"
            res["code"] = 0
        }
        return res
    }


    /**
     * √
     * 发起的问卷-查看所有发起的问卷
     * 参数：无
     * 返回：List<QuestionnaireInitiate>
     */
    @RequestMapping("/allInitiates")
    fun getAllInitiates(): JSONObject {
        var res = JSONObject()

        res["data"] = questionnaireService.getAllQuestionnaireInitiate()
        if (res["data"] == null) {
            res["msg"] = "NoQuestionnairePublished"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }
    /**
     * √
     * 发起的问卷-查看特定的问卷
     * 参数：questionnaireInitiateId  Int
     * 返回：QuestionnaireInitiate
     */
    @RequestMapping("/singleInitiate")
    fun getSingleInitiate(): JSONObject {
        var res = JSONObject()
        res["data"] = questionnaireService.getQuestionnaireInitiate(86)
        if (res["data"] == null) {
            res["msg"] = "NoQuestionnairePublished"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }


    /**
     * 发起的问卷-提交问卷答案
     * 参数:List<QuestionnaireResultRealName>
     *
     */
    @RequestMapping("/submit")
    fun submitRealNameQuestionnaire(@RequestBody r: List<QuestionnaireResultRealName>): JSONObject {
        var res = JSONObject()

        /*  var q = QuestionnaireResultRealName()
          q.questionnaireInitiateId = 86
          q.account = "lsc"
          q.questionNumber = 1
          q.questionContent = "题目内容"
          q.optionNumber = "A"
          q.optionContent = "这题选啥"

          var list = mutableListOf<QuestionnaireResultRealName>()

          //var list : List<QuestionnaireResultRealName>
          list.add(0, q)

          q.questionNumber = 2
          list.add(1, q)

          q.questionNumber = 3
          list.add(2, q)
          q.questionNumber = 4
          list.add(3, q)
          q.questionNumber = 5
          list.add(4, q)
          q.questionNumber = 6
          list.add(5, q)*/
        if(questionnaireService.submitRealNameQuestionnaire(r)){
            res["msg"] = "Failure"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }


    /**
     * √
     * 发起的问卷-查看结果(总结果)
     * 参数:questionnaireInitiateId   Int
     * 返回：QuestionnaireInitiate
     */
    @RequestMapping("/realNameResult")
    fun getRealNameResult(questionnaireInitiateId: Int): JSONObject {
        var res = JSONObject()
        res["data"] = questionnaireService.getRealNameResult(questionnaireInitiateId)
        if (res["data"] == null) {
            res["msg"] = "Failure"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }


    /**
     * √
     * 发起的问卷-查看主观题结果
     * 参数：questionnaireInitiateId   Int   questionNumber  Int
     * 返回：List<QuestionnaireResultRealName>     其中只包含  account（账号）和optionContent（主观题答案）
     */
    @RequestMapping("/subjectResult")
    fun getSubjectiveResult(questionnaireInitiateId: Int, questionNumber: Int): JSONObject {
        var res = JSONObject()
        //res["data"] = questionnaireService.getSubjectiveResult(86, 6)
        res["data"] = questionnaireService.getSubjectiveResult(questionnaireInitiateId, questionNumber)
        if (res["data"] == null) {
            res["msg"] = "Failure"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }


    /**
     *√
     * 发起的问卷-查看选择此选项的账号
     * 参数：questionnaireInitiateId   Int   questionNumber  Int       optionNumber String
     * 返回：List<QuestionnaireResultRealName>     其中只包含  account（账号）
     */
    @RequestMapping("/chooser")
    fun getChooser(questionnaireInitiateId: Int, questionNumber: Int, optionNumber: String): JSONObject {
        var res = JSONObject()
        //res["data"] = questionnaireService.getChooser(86, 6, "A")
        res["data"] = questionnaireService.getChooser(questionnaireInitiateId, questionNumber, optionNumber)
        if (res["data"] == null) {
            res["msg"] = "Failure"
            res["code"] = 0
        } else {
            res["msg"] = "SUCCESS"
            res["code"] = 1
        }
        return res
    }

}